﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Model.Clientes;


namespace welwitschia.Clientes
{
    public partial class ClientesLista : PaginaBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            BindListView();
        }


        protected void Unnamed1_Click(object sender, EventArgs e)
        {
            Response.Redirect(@"~\clientes\ClienteDetalhe.aspx");
        }

        #region ListView1 eventos

        protected void ListView1_ItemDeleting(object sender, ListViewDeleteEventArgs e)
        {
            try
            {
                IClienteService clientesService = new ClienteService();
                IList<Unidade> unidades = clientesService.ObterUnidadesPorCliente(Convert.ToInt64(e.Keys["IdCliente"]));
                if (unidades.Count > 0)
                {
                    MostraAviso("O cliente não pode ser eliminado enquanto tiver unidades associadas!");
                    return;
                }
 
                clientesService.Apaga(new Cliente() { IdCliente = Convert.ToInt64(e.Keys["IdCliente"]) });
                Response.Redirect(@"~\clientes\ClientesLista.aspx");
            }
            catch (Exception ex)
            {
                MostraErro(ex.Message);
            }
        }

        protected void ListView1_ItemEditing(object sender, ListViewEditEventArgs e)
        {
        }

        protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e)
        {
            if(e.CommandName=="Edit")
                Response.Redirect(@"~\clientes\ClienteDetalhe.aspx?cid=" + e.CommandArgument.ToString());  
        }

        protected void ListView1_PagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
        {
            dplvClientes.SetPageProperties(e.StartRowIndex, e.MaximumRows, false);
            BindListView();
        }

        #endregion

        #region Metodos auxiliares

        private void BindListView()
        {
            ListView1.DataSource = (new ClienteService()).ObterTodos();
            ListView1.DataBind();
        }

        #endregion

    }
}